home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Linux / Kubuntu 8.10 / kubuntu-8.10-desktop-i386.iso / casper / filesystem.squashfs / usr / lib / python2.5 / test / pystone.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-29  |  8KB  |  268 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.5)
  3.  
  4. '''
  5. "PYSTONE" Benchmark Program
  6.  
  7. Version:        Python/1.1 (corresponds to C/1.1 plus 2 Pystone fixes)
  8.  
  9. Author:         Reinhold P. Weicker,  CACM Vol 27, No 10, 10/84 pg. 1013.
  10.  
  11.                 Translated from ADA to C by Rick Richardson.
  12.                 Every method to preserve ADA-likeness has been used,
  13.                 at the expense of C-ness.
  14.  
  15.                 Translated from C to Python by Guido van Rossum.
  16.  
  17. Version History:
  18.  
  19.                 Version 1.1 corrects two bugs in version 1.0:
  20.  
  21.                 First, it leaked memory: in Proc1(), NextRecord ends
  22.                 up having a pointer to itself.  I have corrected this
  23.                 by zapping NextRecord.PtrComp at the end of Proc1().
  24.  
  25.                 Second, Proc3() used the operator != to compare a
  26.                 record to None.  This is rather inefficient and not
  27.                 true to the intention of the original benchmark (where
  28.                 a pointer comparison to None is intended; the !=
  29.                 operator attempts to find a method __cmp__ to do value
  30.                 comparison of the record).  Version 1.1 runs 5-10
  31.                 percent faster than version 1.0, so benchmark figures
  32.                 of different versions can\'t be compared directly.
  33.  
  34. '''
  35. LOOPS = 50000
  36. from time import clock
  37. __version__ = '1.1'
  38. (Ident1, Ident2, Ident3, Ident4, Ident5) = range(1, 6)
  39.  
  40. class Record:
  41.     
  42.     def __init__(self, PtrComp = None, Discr = 0, EnumComp = 0, IntComp = 0, StringComp = 0):
  43.         self.PtrComp = PtrComp
  44.         self.Discr = Discr
  45.         self.EnumComp = EnumComp
  46.         self.IntComp = IntComp
  47.         self.StringComp = StringComp
  48.  
  49.     
  50.     def copy(self):
  51.         return Record(self.PtrComp, self.Discr, self.EnumComp, self.IntComp, self.StringComp)
  52.  
  53.  
  54. TRUE = 1
  55. FALSE = 0
  56.  
  57. def main(loops = LOOPS):
  58.     (benchtime, stones) = pystones(loops)
  59.     print 'Pystone(%s) time for %d passes = %g' % (__version__, loops, benchtime)
  60.     print 'This machine benchmarks at %g pystones/second' % stones
  61.  
  62.  
  63. def pystones(loops = LOOPS):
  64.     return Proc0(loops)
  65.  
  66. IntGlob = 0
  67. BoolGlob = FALSE
  68. Char1Glob = '\x00'
  69. Char2Glob = '\x00'
  70. Array1Glob = [
  71.     0] * 51
  72. Array2Glob = map((lambda x: x[:]), [
  73.     Array1Glob] * 51)
  74. PtrGlb = None
  75. PtrGlbNext = None
  76.  
  77. def Proc0(loops = LOOPS):
  78.     global PtrGlbNext, PtrGlb, BoolGlob, PtrGlb
  79.     starttime = clock()
  80.     for i in range(loops):
  81.         pass
  82.     
  83.     nulltime = clock() - starttime
  84.     PtrGlbNext = Record()
  85.     PtrGlb = Record()
  86.     PtrGlb.PtrComp = PtrGlbNext
  87.     PtrGlb.Discr = Ident1
  88.     PtrGlb.EnumComp = Ident3
  89.     PtrGlb.IntComp = 40
  90.     PtrGlb.StringComp = 'DHRYSTONE PROGRAM, SOME STRING'
  91.     String1Loc = "DHRYSTONE PROGRAM, 1'ST STRING"
  92.     Array2Glob[8][7] = 10
  93.     starttime = clock()
  94.     for i in range(loops):
  95.         Proc5()
  96.         Proc4()
  97.         IntLoc1 = 2
  98.         IntLoc2 = 3
  99.         String2Loc = "DHRYSTONE PROGRAM, 2'ND STRING"
  100.         EnumLoc = Ident2
  101.         BoolGlob = not Func2(String1Loc, String2Loc)
  102.         while IntLoc1 < IntLoc2:
  103.             IntLoc3 = 5 * IntLoc1 - IntLoc2
  104.             IntLoc3 = Proc7(IntLoc1, IntLoc2)
  105.             IntLoc1 = IntLoc1 + 1
  106.         Proc8(Array1Glob, Array2Glob, IntLoc1, IntLoc3)
  107.         PtrGlb = Proc1(PtrGlb)
  108.         CharIndex = 'A'
  109.         while CharIndex <= Char2Glob:
  110.             if EnumLoc == Func1(CharIndex, 'C'):
  111.                 EnumLoc = Proc6(Ident1)
  112.             
  113.             CharIndex = chr(ord(CharIndex) + 1)
  114.         IntLoc3 = IntLoc2 * IntLoc1
  115.         IntLoc2 = IntLoc3 / IntLoc1
  116.         IntLoc2 = 7 * (IntLoc3 - IntLoc2) - IntLoc1
  117.         IntLoc1 = Proc2(IntLoc1)
  118.     
  119.     benchtime = clock() - starttime - nulltime
  120.     return (benchtime, loops / benchtime)
  121.  
  122.  
  123. def Proc1(PtrParIn):
  124.     PtrParIn.PtrComp = NextRecord = PtrGlb.copy()
  125.     PtrParIn.IntComp = 5
  126.     NextRecord.IntComp = PtrParIn.IntComp
  127.     NextRecord.PtrComp = PtrParIn.PtrComp
  128.     NextRecord.PtrComp = Proc3(NextRecord.PtrComp)
  129.     if NextRecord.Discr == Ident1:
  130.         NextRecord.IntComp = 6
  131.         NextRecord.EnumComp = Proc6(PtrParIn.EnumComp)
  132.         NextRecord.PtrComp = PtrGlb.PtrComp
  133.         NextRecord.IntComp = Proc7(NextRecord.IntComp, 10)
  134.     else:
  135.         PtrParIn = NextRecord.copy()
  136.     NextRecord.PtrComp = None
  137.     return PtrParIn
  138.  
  139.  
  140. def Proc2(IntParIO):
  141.     IntLoc = IntParIO + 10
  142.     while Char1Glob == 'A':
  143.         IntLoc = IntLoc - 1
  144.         IntParIO = IntLoc - IntGlob
  145.         EnumLoc = Ident1
  146.     if EnumLoc == Ident1:
  147.         break
  148.         continue
  149.     continue
  150.     return IntParIO
  151.  
  152.  
  153. def Proc3(PtrParOut):
  154.     global IntGlob
  155.     if PtrGlb is not None:
  156.         PtrParOut = PtrGlb.PtrComp
  157.     else:
  158.         IntGlob = 100
  159.     PtrGlb.IntComp = Proc7(10, IntGlob)
  160.     return PtrParOut
  161.  
  162.  
  163. def Proc4():
  164.     global Char2Glob
  165.     BoolLoc = Char1Glob == 'A'
  166.     if not BoolLoc:
  167.         pass
  168.     BoolLoc = BoolGlob
  169.     Char2Glob = 'B'
  170.  
  171.  
  172. def Proc5():
  173.     global Char1Glob, BoolGlob
  174.     Char1Glob = 'A'
  175.     BoolGlob = FALSE
  176.  
  177.  
  178. def Proc6(EnumParIn):
  179.     EnumParOut = EnumParIn
  180.     if not Func3(EnumParIn):
  181.         EnumParOut = Ident4
  182.     
  183.     if EnumParIn == Ident1:
  184.         EnumParOut = Ident1
  185.     elif EnumParIn == Ident2:
  186.         if IntGlob > 100:
  187.             EnumParOut = Ident1
  188.         else:
  189.             EnumParOut = Ident4
  190.     elif EnumParIn == Ident3:
  191.         EnumParOut = Ident2
  192.     elif EnumParIn == Ident4:
  193.         pass
  194.     elif EnumParIn == Ident5:
  195.         EnumParOut = Ident3
  196.     
  197.     return EnumParOut
  198.  
  199.  
  200. def Proc7(IntParI1, IntParI2):
  201.     IntLoc = IntParI1 + 2
  202.     IntParOut = IntParI2 + IntLoc
  203.     return IntParOut
  204.  
  205.  
  206. def Proc8(Array1Par, Array2Par, IntParI1, IntParI2):
  207.     global IntGlob
  208.     IntLoc = IntParI1 + 5
  209.     Array1Par[IntLoc] = IntParI2
  210.     Array1Par[IntLoc + 1] = Array1Par[IntLoc]
  211.     Array1Par[IntLoc + 30] = IntLoc
  212.     for IntIndex in range(IntLoc, IntLoc + 2):
  213.         Array2Par[IntLoc][IntIndex] = IntLoc
  214.     
  215.     Array2Par[IntLoc][IntLoc - 1] = Array2Par[IntLoc][IntLoc - 1] + 1
  216.     Array2Par[IntLoc + 20][IntLoc] = Array1Par[IntLoc]
  217.     IntGlob = 5
  218.  
  219.  
  220. def Func1(CharPar1, CharPar2):
  221.     CharLoc1 = CharPar1
  222.     CharLoc2 = CharLoc1
  223.     if CharLoc2 != CharPar2:
  224.         return Ident1
  225.     else:
  226.         return Ident2
  227.  
  228.  
  229. def Func2(StrParI1, StrParI2):
  230.     IntLoc = 1
  231.     while IntLoc <= 1:
  232.         if Func1(StrParI1[IntLoc], StrParI2[IntLoc + 1]) == Ident1:
  233.             CharLoc = 'A'
  234.             IntLoc = IntLoc + 1
  235.             continue
  236.     if CharLoc >= 'W' and CharLoc <= 'Z':
  237.         IntLoc = 7
  238.     
  239.     if CharLoc == 'X':
  240.         return TRUE
  241.     elif StrParI1 > StrParI2:
  242.         IntLoc = IntLoc + 7
  243.         return TRUE
  244.     else:
  245.         return FALSE
  246.  
  247.  
  248. def Func3(EnumParIn):
  249.     EnumLoc = EnumParIn
  250.     if EnumLoc == Ident3:
  251.         return TRUE
  252.     
  253.     return FALSE
  254.  
  255. if __name__ == '__main__':
  256.     import sys
  257.     
  258.     def error(msg):
  259.         print >>sys.stderr, msg,
  260.         print >>sys.stderr, 'usage: %s [number_of_loops]' % sys.argv[0]
  261.         sys.exit(100)
  262.  
  263.     nargs = len(sys.argv) - 1
  264.     None if nargs > 1 else None<EXCEPTION MATCH>ValueError
  265.     loops = LOOPS
  266.     main(loops)
  267.  
  268.